package io.renren.modules.cs.controller;

import java.io.File;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Map;
import java.util.UUID;

import com.google.common.hash.Hashing;
import com.google.common.io.Files;
import io.renren.common.exception.RRException;
import io.renren.common.validator.ValidatorUtils;
import io.renren.modules.oss.cloud.OSSFactory;
import org.apache.commons.io.FileUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import io.renren.modules.cs.entity.ZbsjdemoEntity;
import io.renren.modules.cs.service.ZbsjdemoService;
import io.renren.common.utils.PageUtils;
import io.renren.common.utils.R;
import org.springframework.web.multipart.MultipartFile;


/**
 * 指标数据测试表
 *
 * @author zj
 * @email 465189260@qq.com
 * @date 2020-08-08 23:54:58
 */
@RestController
@RequestMapping("cs/zbsjdemo")
public class ZbsjdemoController {
    @Autowired
    private ZbsjdemoService zbsjdemoService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    @RequiresPermissions("cs:zbsjdemo:list")
    public R list(@RequestParam Map<String, Object> params) {
        PageUtils page = zbsjdemoService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息 RequestMapping返回json数据
     */
    @RequestMapping("/info/{zbsjId}")
    @RequiresPermissions("cs:zbsjdemo:info")
    public R info(@PathVariable("zbsjId") Long zbsjId) {
        ZbsjdemoEntity zbsjdemo = zbsjdemoService.getById(zbsjId);

        return R.ok().put("zbsjdemo", zbsjdemo);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    @RequiresPermissions("cs:zbsjdemo:save")
    public R save(@RequestBody ZbsjdemoEntity zbsjdemo) {
        zbsjdemoService.save(zbsjdemo);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @RequiresPermissions("cs:zbsjdemo:update")
    public R update(@RequestBody ZbsjdemoEntity zbsjdemo) {
        ValidatorUtils.validateEntity(zbsjdemo);
        zbsjdemoService.updateById(zbsjdemo);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    @RequiresPermissions("cs:zbsjdemo:delete")
    public R delete(@RequestBody Long[] zbsjIds) {
        zbsjdemoService.removeByIds(Arrays.asList(zbsjIds));

        return R.ok();
    }

    /**
     * 异步上传数据
     */
    @RequestMapping("/uploadfile")
    @RequiresPermissions("cs:zbsjdemo:save")
    public R uploadfile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            throw new RRException("上传文件不能为空");
        }
        //上传文件

//        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//
//        /** 获取文件的后缀* */
//        String filename = file.getOriginalFilename();

        InputStream inputStream;
        String path = "";
        String newVersionName = "";
        String fileMd5 = "";
        String newFileName = "";
        try {

//            inputStream = file.getInputStream();
//            File tmpFile = File.createTempFile(filename,
//                    filename.substring(filename.lastIndexOf(".")));
//            fileMd5 = Files.hash(tmpFile, Hashing.md5()).toString();
//            FileUtils.copyInputStreamToFile(inputStream, tmpFile);
//            // 上传UpYun后返回的path
//            String file_path = tmpFile.getPath();
//            System.out.println("file_path" + file_path);

            String oldFileName = file.getOriginalFilename(); // 获取上传文件的原名
            // 存储图片的虚拟本地路径（这里需要配置tomcat的web模块路径，双击猫进行配置）
            String saveFilePath = "E://picture";
            // 上传图片

            // 新的图片名称
            newFileName = UUID.randomUUID() + oldFileName.substring(oldFileName.lastIndexOf("."));
            // 新图片
            File newFile = new File(saveFilePath + "\\" + newFileName);
            // 将内存中的数据写入磁盘
            file.transferTo(newFile);
            // 将新图片名称返回到前端


//            String versionGbk = AnalysisApk.unZip(tmpFile.getPath(), "")[0];
//            byte[] versionNam = versionGbk.getBytes("iso8859-1");// 这里写转换前的编码方式
//            newVersionName = new String(versionNam, "utf-8");// 这里写转换后的编码方式
//            path = UpyunUtils.uploadApk(tmpFile,
//                    multipartFile.getOriginalFilename(), true, newVersionName);
//            System.err.println(path);
//            tmpFile.delete();

        } catch (Exception e) {
            e.printStackTrace();
        }
//        json.put("newVersionName", newVersionName);
//        json.put("fileMd5", fileMd5);
//        json.put("message", "应用上传成功");
//        json.put("status", true);
//        json.put("filePath", path);
        return R.ok().put("filename", newFileName);
    }
}
